package ddu.com.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.Filter;

/**
 * @author 张霞
 * @version 1.0
 * @项目：mammon-web-platform
 * @描述：基于代码的servlet容器初始化，相当于配置web.xml,web初始化类,替代xml 继承Abs..类后, 会同时创建DispatcherServlet和ContextLoaderListener
 * @创建时间 0:08 2018/4/15 0015
 * 功能：系统初始化入口
 */
@Slf4j
public class WebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    public WebApplicationInitializer() {
        log.info("WebApplicationInitializer 加载--");
    }

    /**
     * @param
     * @return java.lang.Class<?>[]
     * @author:张霞
     * @description：配置ContextLoaderListener ,设置spring容器启动的入口--AppConfig
     * @method:getRootConfigClasses
     * @create time：2018/4/15 0015 0:27
     * 根容器，用于获取Spring应用容器的配置文件
     */
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[]{RootConfig.class};
    }

    /**
     * 配置DispatcherServlet, Spring mvc容器，是根容器的子容器
     */
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[]{WebConfig.class};
    }

    /**
     * 配置ServletMappings,设置DispatcherServlet的拦截路径,
     * "/"表示由DispatcherServlet处理所有向该应用发起的请求。
     */
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }


    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        characterEncodingFilter.setForceEncoding(true);
        return new Filter[] {characterEncodingFilter,characterEncodingFilter};
    }
}
